
#include "test_list.h"

#ifdef TEST_SUPPORT_OSTREAM

#include <den/meta/support_ostream.h>

#include <string>

#define TEST_CASE_NAME Den
#define TEST_NUMBER(n) support_ostream##_##n


#define TEST_SUPPORT_OSTREAM_000
#define TEST_SUPPORT_OSTREAM_001
#define TEST_SUPPORT_OSTREAM_002
#define TEST_SUPPORT_OSTREAM_003
#define TEST_SUPPORT_OSTREAM_004
#define TEST_SUPPORT_OSTREAM_005
#define TEST_SUPPORT_OSTREAM_006
#define TEST_SUPPORT_OSTREAM_007
#define TEST_SUPPORT_OSTREAM_008
#define TEST_SUPPORT_OSTREAM_009
#define TEST_SUPPORT_OSTREAM_010
#define TEST_SUPPORT_OSTREAM_011
#define TEST_SUPPORT_OSTREAM_012
#define TEST_SUPPORT_OSTREAM_013
#define TEST_SUPPORT_OSTREAM_014
#define TEST_SUPPORT_OSTREAM_015
#define TEST_SUPPORT_OSTREAM_016
#define TEST_SUPPORT_OSTREAM_017
#define TEST_SUPPORT_OSTREAM_018
#define TEST_SUPPORT_OSTREAM_019
#define TEST_SUPPORT_OSTREAM_020
#define TEST_SUPPORT_OSTREAM_021
#define TEST_SUPPORT_OSTREAM_022
#define TEST_SUPPORT_OSTREAM_023
#define TEST_SUPPORT_OSTREAM_024
#define TEST_SUPPORT_OSTREAM_025
#define TEST_SUPPORT_OSTREAM_026
#define TEST_SUPPORT_OSTREAM_027
#define TEST_SUPPORT_OSTREAM_028
#define TEST_SUPPORT_OSTREAM_029
#define TEST_SUPPORT_OSTREAM_030
#define TEST_SUPPORT_OSTREAM_031
#define TEST_SUPPORT_OSTREAM_032

//------------------------------------------------------------------------------------------------------//

namespace{

    struct s1ome{};
    struct rabbit{};

    ::std::ostream& operator<< (::std::ostream& ss, const rabbit&) { return ss; }

    struct rabbit1
    {
        template<class T> friend T&
               operator<<(T& os, const rabbit1&){ return os; }
    };

}//namespace

//------------------------------------------------------------------------------------------------------//

#ifdef TEST_SUPPORT_OSTREAM_000
TEST(TEST_CASE_NAME, TEST_NUMBER(000))
{
    EXPECT_EQ(1, support_ostream<int>::value);
    EXPECT_EQ(1, support_ostream<float>::value);
    EXPECT_EQ(1, support_ostream<::std::string>::value);

    EXPECT_EQ(0, support_ostream<s1ome>::value);
    EXPECT_EQ(1, support_ostream<rabbit>::value);
    EXPECT_EQ(1, support_ostream<rabbit1>::value);
}
#endif // TEST_SUPPORT_OSTREAM_000

#ifdef TEST_SUPPORT_OSTREAM_001
#endif // TEST_SUPPORT_OSTREAM_001

#ifdef TEST_SUPPORT_OSTREAM_002
#endif // TEST_SUPPORT_OSTREAM_002

#ifdef TEST_SUPPORT_OSTREAM_003
#endif // TEST_SUPPORT_OSTREAM_003

#ifdef TEST_SUPPORT_OSTREAM_004
#endif // TEST_SUPPORT_OSTREAM_004

#ifdef TEST_SUPPORT_OSTREAM_005
#endif // TEST_SUPPORT_OSTREAM_005

#ifdef TEST_SUPPORT_OSTREAM_006
#endif // TEST_SUPPORT_OSTREAM_006

#ifdef TEST_SUPPORT_OSTREAM_007
#endif // TEST_SUPPORT_OSTREAM_007

#ifdef TEST_SUPPORT_OSTREAM_008
#endif // TEST_SUPPORT_OSTREAM_008

#ifdef TEST_SUPPORT_OSTREAM_009
#endif // TEST_SUPPORT_OSTREAM_009

#ifdef TEST_SUPPORT_OSTREAM_010
#endif // TEST_SUPPORT_OSTREAM_010

#ifdef TEST_SUPPORT_OSTREAM_011
#endif // TEST_SUPPORT_OSTREAM_011

#ifdef TEST_SUPPORT_OSTREAM_012
#endif // TEST_SUPPORT_OSTREAM_012

#ifdef TEST_SUPPORT_OSTREAM_013
#endif // TEST_SUPPORT_OSTREAM_013

#ifdef TEST_SUPPORT_OSTREAM_014
#endif // TEST_SUPPORT_OSTREAM_014

#ifdef TEST_SUPPORT_OSTREAM_015
#endif // TEST_SUPPORT_OSTREAM_015

#ifdef TEST_SUPPORT_OSTREAM_016
#endif // TEST_SUPPORT_OSTREAM_016

#ifdef TEST_SUPPORT_OSTREAM_017
#endif // TEST_SUPPORT_OSTREAM_017

#ifdef TEST_SUPPORT_OSTREAM_018
#endif // TEST_SUPPORT_OSTREAM_018

#ifdef TEST_SUPPORT_OSTREAM_019
#endif // TEST_SUPPORT_OSTREAM_019

#ifdef TEST_SUPPORT_OSTREAM_020
#endif // TEST_SUPPORT_OSTREAM_020

#ifdef TEST_SUPPORT_OSTREAM_021
#endif // TEST_SUPPORT_OSTREAM_021

#ifdef TEST_SUPPORT_OSTREAM_022
#endif // TEST_SUPPORT_OSTREAM_022

#ifdef TEST_SUPPORT_OSTREAM_023
#endif // TEST_SUPPORT_OSTREAM_023

#ifdef TEST_SUPPORT_OSTREAM_024
#endif // TEST_SUPPORT_OSTREAM_024

#ifdef TEST_SUPPORT_OSTREAM_025
#endif // TEST_SUPPORT_OSTREAM_025

#ifdef TEST_SUPPORT_OSTREAM_026
#endif // TEST_SUPPORT_OSTREAM_026

#ifdef TEST_SUPPORT_OSTREAM_027
#endif // TEST_SUPPORT_OSTREAM_027

#ifdef TEST_SUPPORT_OSTREAM_028
#endif // TEST_SUPPORT_OSTREAM_028

#ifdef TEST_SUPPORT_OSTREAM_029
#endif // TEST_SUPPORT_OSTREAM_029

#ifdef TEST_SUPPORT_OSTREAM_030
#endif // TEST_SUPPORT_OSTREAM_030

#ifdef TEST_SUPPORT_OSTREAM_031
#endif // TEST_SUPPORT_OSTREAM_031

#ifdef TEST_SUPPORT_OSTREAM_032
#endif // TEST_SUPPORT_OSTREAM_032





#endif //TEST_SUPPORT_OSTREAM



